const path=require('path'); //使用path必须引入
//引入规则模块
const rule=require("./config_mudule/rules.js");
//引入插件模块
const plugin=require("./config_mudule/plugins.js");
//公共路径变量
var webPath={
    publicPath:"http://localhost:8081/"
}
module.exports={
    /*webpack4.x版本中，可以不用配置entry和output，默认的entry:’/src’, 
      默认的output:’./dist’，但是零配置的情况下’./src’的入口文件的文件名必须是index.js
      否则会报错 
     */
    //入口
    entry:{
        entry:'./src/index.js', //入口文件
        //配置引入的第三方库
        //jquery:'jquery',
        //vue:'vue/dist/vue.min.js'
    },
    //出口
    output:{
        path:path.resolve(__dirname,'dist'),//dist的绝对路径,node的语法
        filename:'./js/[name].js',   //打包后的js文件名  [name].js  入口打包后生成自己名字对应的js文件,有几个js,打包生成几个
        //注意: 是entry的key,即 生成的是entry.js和entry.js
        //设置打包后的文件公共路径
        publicPath:webPath.publicPath,
       // chunkFilename: './assert/[name].js' //设置分离后的第三方库目录
    },
    //模块
    module:{
        //规则数组
        rules:rule.rules //规则模块
    },
    //插件模块
    plugins:plugin.plugins,
    //开发服务
    devServer:{
        //监听服务的路径
        contentBase:path.resolve(__dirname,'dist'),
        host:'localhost',
        compress:true,//是否压缩
        port:8081
    },
    watchOptions:{
        //检测修改的时间，以毫秒为单位
        poll:1000, 
        //防止重复保存而发生重复编译错误。这里设置的500是半秒内重复保存，不进行打包操作
        aggregateTimeout:500, 
        //不监听的目录
        ignored:/node_modules/, 
    },
    //打包后分割代码块配置
    // optimization: {
    //     splitChunks: {
    //         chunks: 'initial', // 只对入口文件处理  必须三选一： "initial" | "all"(默认就是all) | "async"
    //         //配置缓存组
    //         cacheGroups: {
    //             jquery: { // key 为entry中定义的 入口名称
    //                 test: /node_modules\/jquery\//,  //正则规则验证，如果符合就提取 chunk
    //                 name: "jquery.min", // 要缓存的 分隔出来的 chunk 名称
    //                 minSize: 0, //最小尺寸，默认0
    //                 minChunks: 1,  //最小 chunk ，默认1
    //                 priority: 0, // 缓存组优先级
    //                 enforce: true,
    //                 //maxAsyncRequests: 1, // 最大异步请求数， 默认1
    //                 //maxInitialRequests : 1, // 最大初始化请求书，默认1
    //                 //reuseExistingChunk: true // 可设置是否重用该chunk（查看源码没有发现默认值）
    //             },
    //             vue:{
    //                 test: /node_modules\/vue\//,
    //                 name: "vue", // 要缓存的 分隔出来的 chunk 名称
    //                 minSize: 0,
    //                 minChunks: 1,
    //                 enforce: true,
    //             }
    //         }
    //     }
    // }
}